package com.example.csmall.product.mapper;

import com.example.csmall.product.pojo.entity.Album;
import com.example.csmall.product.pojo.entity.Spu;
import com.example.csmall.product.pojo.vo.AlbumListItemVO;
import com.example.csmall.product.pojo.vo.AlbumStandardVO;
import com.example.csmall.product.pojo.vo.SpuListItemVO;
import com.example.csmall.product.pojo.vo.SpuStandardVO;

import java.util.List;

public interface SpuMapper {

    /**
     * 向表中添加一条记录
     * @param sup 用于封装记录的类型
     * @return 受影响的行数
     */
    int insert(Spu sup);

    /**
     * 添加多条记录
     * @param spuList
     * @return
     */
    int insertBatch(List<Spu> spuList);

    /**
     * 根据id删除记录
     * @param id 需要删除的id
     * @return 受影响的行数
     */
    int deleteById(Integer id);

    /**
     * 批量根据id删除数据
     * @param ids
     * @return
     */
    int deleteByIds(Long[] ids);

    /**
     * 根据id修改数据
     * @param spu
     * @return
     */
    int updateById(Spu spu);

    /**
     * 统计表中信息
     * @return 受影响行数
     */
    int count();

    /**
     * 根据相册id album_id统计数据
     * @param albumId
     * @return
     */
    int countByAlbum(Long albumId);

    /**
     * 根据品牌id brand_id统计数据
     * @param brandId
     * @return
     */
    int countByBrand(Long brandId);

    /**
     * 根据类别id category_id统计数据
     * @param categoryId
     * @return
     */
    int countByCategory(Long categoryId);

    /**
     * 根据属性模板id Attribute_template_id分类
     * @param attributeTemplateId
     * @return
     */
    int countByAttributeTemplate(Long attributeTemplateId);

    /**
     * 根据ID查询数据
     * @param id 要查询的id
     * @return 如果没有就返回null
     */
    SpuStandardVO getStandardById(Long id);

    /**
     * 查询表中所有字段
     * @return 返回存放所有记录的list集合
     */
    List<SpuListItemVO> list();


}
